package com.wgh.product.mapper;

import com.wgh.product.entity.shop.ProductRelation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品关联Mapper接口
 * 
 * @author AI Shop
 */
@Mapper
public interface ProductRelationMapper extends BaseMapper<ProductRelation> {

    /**
     * 根据商品ID和关联类型查询关联商品列表
     * 
     * @param mainProductId 主商品ID
     * @param relationType 关联类型
     * @return 关联商品列表
     */
    List<ProductRelation> selectByMainProductIdAndType(@Param("mainProductId") Long mainProductId, @Param("relationType") Integer relationType);

    /**
     * 根据关联商品ID和关联类型查询关联记录
     * 
     * @param relatedProductId 关联商品ID
     * @param relationType 关联类型
     * @return 关联商品列表
     */
    List<ProductRelation> selectByRelatedProductIdAndType(@Param("relatedProductId") Long relatedProductId, @Param("relationType") Integer relationType);

    /**
     * 批量添加商品关联
     * 
     * @param productRelations 商品关联列表
     * @return 影响行数
     */
    int insertBatch(@Param("list") List<ProductRelation> productRelations);

    /**
     * 根据主商品ID删除商品关联
     * 
     * @param mainProductId 主商品ID
     * @return 影响行数
     */
    int deleteByMainProductId(@Param("mainProductId") Long mainProductId);

    /**
     * 根据主商品ID和关联类型删除商品关联
     * 
     * @param mainProductId 主商品ID
     * @param relationType 关联类型
     * @return 影响行数
     */
    int deleteByMainProductIdAndType(@Param("mainProductId") Long mainProductId, @Param("relationType") Integer relationType);

    /**
     * 查询商品关联是否存在
     * 
     * @param mainProductId 主商品ID
     * @param relatedProductId 关联商品ID
     * @param relationType 关联类型
     * @return 存在数量
     */
    int countRelation(@Param("mainProductId") Long mainProductId, @Param("relatedProductId") Long relatedProductId, @Param("relationType") Integer relationType);
}